iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 0
0
AI & Data

推薦系統系列 第 4

Day 4 - Collaborative-filtering 推薦系統

  • 分享至 

  • xImage
  •  

概念

Collaborative-filtering 推薦系統的核心概念在於:如果兩個 User 過去對於很多 Item 的評價都很相近,那對一個新的 Item,兩人也會給出相近的評價。從另一個角度來看,如果很多 User 都給了某兩個 Item 相近的評價,那對於一位 User ,他對這兩件 Item 的評價也可能會很接近。

正式定義

以下用比較數學的方法,來定義協同過濾的推薦系統,以方便之後的描述。

  • U 表示 User 的集合
  • I 表示 Item 的集合
  • R 表示評分的紀錄 (rating)
  • S 代表評分值的集合,例如 S = [like, dislike] 或 [1, 5]
  • U 集合中的 User u 可以對 I 集合中的 Item i 做出評分 r_ui
  • 所有給過 Item i 評價的 User 集合叫做 U_i
  • 而所有被 User u 評價過的 Item 集合叫做 I_u
  • 同時給過 Item i 和 Item j 評價的 User 集合叫做 U_ij
  • 同時被 User u 和 User v 評價過的 Item 集合叫做 I_uv

推薦系統的核心就可以簡化成一個函數

f: U * I -> S

輸入是 User u 和一個 Item i , f 可以預測 u 會給 i 什麼評價。而推薦的動作就是在 I - I_u (u 還沒評價過的 Item) 中,找到一個(或多個)可能給最高評價的 Items。

這樣一來,找出 f 的就可以想成一個機器學習的問題。如果我們有很多評價的紀錄 R,就可以將 R 分成 R_train 和 R_test,用 R_train 來訓練出函數 f
而 R_test 可以用來計算算出來的 f 的 Accuracy,用來評斷 f 的好壞。常用的 Accuracy 算法有 Mean Absolute ErrorRoot Mean Square Error,之後會再補做介紹。

但是我們不一定有評價紀錄 R,這時候就需要別的方法來評斷 f
如果有 User 實際有興趣的 Item 清單 T (例如由購買、瀏覽、或點擊紀錄取得),也可以用 T
f 算出來要推薦的清單 L ,來算出推對的比例 Precision 和實際有興趣的涵蓋率 Recall,同樣未來會再講詳細一點。

Neighborhood-based Method

協同過濾的推薦方法又可以再分為 Neighborhood-based 和 Model-based。
Neighborhood-based 又可以再細分為 user-based 和 item-based,兩者的差別就是一開始概念中提到的兩種角度。
Neighborhood-based 的方法有許多好處:

  1. 簡單容易實作
  2. 好解釋,因為是根據鄰居關係做出推薦,只要給出鄰居清單就可以解釋推薦的由來
  3. 效率好,可以預先算出要推薦的清單,系統可以即時推薦
  4. 穩定,item-based 的系統如果已經有了推薦清單,對一個新 User 也可以馬上做出推薦

所以之後會以它為主來介紹~


上一篇
Day 3 - Content-based 推薦系統
系列文
推薦系統4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言